package org.llc.flink.study.example


object MapOperateDemo02 {
  def main(args: Array[String]): Unit = {
    val list1 = List(3, 5, 7, 9)

    /**
      * 请将List(3,5,7) 中的所有元素都 * 2
      * 将其结果放到一个新的集合中返回，
      * 即返回一个新的List(6,10,14), 请编写程序实现
      */
    val list2 = list1.map(multiple)
    println("list2 = " + list2)
    //深刻理解map映射函数的机制-模拟实现
    val myList1 = MyList()
    val myList2 = myList1.map(multiple)
    println("myList2 = " + myList2)
  }

  def multiple(n: Int): Int = {
    2 * n
  }
}

/**
  * 深刻理解map映射函数的机制-模拟实现
  */
class MyList {
  val list1 = List(3, 5, 7, 9)
  // 新的集合
  var list2 = List[Int]()

  // 写map
  def map(f: Int => Int): List[Int] = {
    // 遍历集合
    for (item <- this.list1) {
      list2 = list2 :+ (item * 2)
    }
    list2
  }
}

object MyList {
  def apply(): MyList = new MyList()
}
